using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Book.Blog.Core.DTOs;

namespace Book.Blog.Core.Interfaces
{
    public interface ISettingService
    {
        Task<IEnumerable<SettingDTO>> GetAllSettingsAsync();
        Task<IEnumerable<SettingDTO>> GetPublicSettingsAsync();
        Task<SettingDTO?> GetSettingByKeyAsync(string key);
        Task<IEnumerable<SettingGroupDTO>> GetSettingGroupsAsync();
        Task<SiteSettingsDTO> GetSiteSettingsAsync();
        Task<EmailSettingsDTO> GetEmailSettingsAsync();
        Task<StorageSettingsDTO> GetStorageSettingsAsync();
        Task<SettingDTO> CreateSettingAsync(CreateSettingDTO dto);
        Task<SettingDTO> UpdateSettingAsync(UpdateSettingDTO dto);
        Task<bool> BatchUpdateSettingsAsync(BatchUpdateSettingsDTO dto);
        Task<bool> DeleteSettingAsync(Guid id);
        Task<bool> ResetToDefaultAsync();
        Task<bool> ValidateSettingValueAsync(string key, string value);
    }
} 